এনক্যাপসুলেশন (Encapsulation)
এনক্যাপসুলেশন হলো একটি প্রক্রিয়া যা ডেটা এবং তার সাথে সম্পর্কিত ফাংশন বা মেথডগুলোকে একত্রে একটি একক ইউনিটে বেঁধে রাখে। এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের (OOP) একটি গুরুত্বপূর্ণ বৈশিষ্ট্য।
এনক্যাপসুলেশনের মাধ্যমে আমরা ডেটা এবং ফাংশনগুলোকে সরাসরি অ্যাক্সেস না দিয়ে, একটি ক্লাসের মাধ্যমে নিয়ন্ত্রিত অ্যাক্সেস প্রদান করতে পারি। এটি কোডের নিরাপত্তা এবং স্থিতিশীলতা বাড়ায়, কারণ বাহ্যিক কোনো কোড সরাসরি ডেটা পরিবর্তন করতে পারে না।
উদাহরণ (Python):
class BankAccount:
def __init__(self, balance):
self.__balance = balance # প্রাইভেট ভেরিয়েবল (প্রত্যক্ষ অ্যাক্সেস করা যাবে না)
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
def get_balance(self):
return self.__balance
ব্যাখ্যা: এখানে __balance হলো একটি প্রাইভেট ভেরিয়েবল, যা বাহির থেকে সরাসরি অ্যাক্সেস করা যাবে না। এটি কেবলমাত্র deposit(), withdraw(), এবং get_balance() মেথডের মাধ্যমে অ্যাক্সেস করা যাবে। এনক্যাপসুলেশন ব্যবহার করে ব্যাঙ্কের অ্যাকাউন্টের ব্যালান্সকে নিয়ন্ত্রিতভাবে অ্যাক্সেস করা হয়েছে।
অ্যাবস্ট্রাকশন (Abstraction)
অ্যাবস্ট্রাকশন হলো জটিলতা কমানোর একটি প্রক্রিয়া যা কেবলমাত্র প্রয়োজনীয় তথ্য প্রকাশ করে এবং অবাঞ্ছিত বিবরণ লুকিয়ে রাখে। এটি ব্যবহারকারীর দৃষ্টিভঙ্গিতে কেবল গুরুত্বপূর্ণ তথ্য প্রদর্শন করে এবং অভ্যন্তরীণ জটিলতা লুকিয়ে রাখে।
অ্যাবস্ট্রাকশন সাধারণত Abstract Classes এবং Interfaces এর মাধ্যমে প্রয়োগ করা হয়। এটি আমাদেরকে একটি শ্রেণীর (class) বাহ্যিক আচরণ বোঝাতে সাহায্য করে, কিন্তু অভ্যন্তরীণ কাজ কীভাবে হচ্ছে তা না দেখিয়ে।
উদাহরণ (Python):
from abc import ABC, abstractmethod
class Animal(ABC): # Abstract Class
@abstractmethod
def sound(self):
pass # Abstract Method, এখানে শুধু প্রয়োজনীয় তথ্য আছে, বাস্তবায়ন নয়
class Dog(Animal): # Subclass
def sound(self):
return "Bark"
class Cat(Animal): # Subclass
def sound(self):
return "Meow"
ব্যাখ্যা: এখানে Animal হলো একটি অ্যাবস্ট্রাক্ট ক্লাস যা sound মেথডকে সংজ্ঞায়িত করেছে, কিন্তু তার বাস্তবায়ন করে নি। Dog এবং Cat ক্লাসগুলিতে sound() মেথড বাস্তবায়ন করা হয়েছে, যা প্রতিটি প্রাণীর জন্য আলাদা।
এনক্যাপসুলেশন বনাম অ্যাবস্ট্রাকশন
| বৈশিষ্ট্য | এনক্যাপসুলেশন | অ্যাবস্ট্রাকশন |
|---|---|---|
| অর্থ | ডেটা এবং ফাংশনগুলোকে একত্রে বাঁধা | জটিলতা হ্রাস করে শুধুমাত্র প্রয়োজনীয় তথ্য প্রকাশ |
| লক্ষ্য | ডেটার সরাসরি অ্যাক্সেস রোধ করা | অবাঞ্ছিত বিবরণ লুকিয়ে ব্যবহারকারীর জন্য সহজ করা |
| বাস্তবায়ন | প্রাইভেট ভেরিয়েবল এবং মেথড ব্যবহার করে | Abstract Class বা Interface ব্যবহার করে |
| উদাহরণ | ব্যাংক অ্যাকাউন্টের ব্যালান্স নিয়ন্ত্রণ করা | ভিন্ন প্রাণীর আওয়াজ প্রকাশ করা |
উপসংহার
এনক্যাপসুলেশন এবং অ্যাবস্ট্রাকশন উভয়ই OOP এর গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডেটার নিরাপত্তা এবং কোডের সরলীকরণে সহায়ক। এনক্যাপসুলেশন ডেটাকে নিয়ন্ত্রিতভাবে অ্যাক্সেসযোগ্য করে তোলে, আর অ্যাবস্ট্রাকশন কেবলমাত্র প্রয়োজনীয় তথ্য প্রকাশ করে জটিলতা কমায়।
Read more